#ifndef REMINDERDIALOG_H
#define REMINDERDIALOG_H

#include <QDialog>
#include <QDateTime>
#include <Phonon/MediaObject>

#include "ui_reminderdialog.h"

namespace Ui {
    class ReminderDialog;
}

class ReminderDialog : public QDialog
{
    Q_OBJECT

public:
    explicit ReminderDialog(QWidget *parent = 0);
    ~ReminderDialog();

public slots:
    void accept();
    void mediaState(Phonon::State  newstate, Phonon::State oldstate);
    void setInterval(const QString& interval);
    void setIntervalIdx(const int idx);
    QString getInterval() const;
    int getIntervalIdx() const;
    void setRepeat(bool repeat);
    bool getRepeat() const;
    void setAudio(bool audio);
    bool getAudio() const;
    void setAudioName(const QString& name);
    QString getAudioName() const;
    void setAutoclose(bool autoclose);
    bool getAutoclose() const;
    void setAutocloseInterval(const int secs);
    int getAutocloseInterval() const;
    void setReminderName(const QString& name);
    QString getReminderName() const;
    void setFromDate(const QDateTime &datetime);
    QDateTime getFromDate() const;
    void setMinutes(int minutes);
    int getMinutes() const;
    void setHours(int hours);
    int getHours() const;
    void setDays(const bool* days);
    void getDays(bool* days);
    void setDialog(bool dialog);
    bool getDialog() const;
    void setDialogText(const QString& text);
    QString getDialogText() const;
    void setTip(bool tip);
    bool getTip() const;
    void setTipText(const QString& text );
    QString getTipText() const;
    void setDefaults();

    inline bool hasEdit() const { return _edit; }
    inline void setEdit(bool edit) {_edit = edit; }
    inline void setIndex(const int index = 1) { idx = index; }
    inline int getIndex() const { return idx; }

signals:
    void playSound(const QString& filename);
    void stopSound();

private slots:
    void toggleRepeatOptions(bool toggle);
    void toggleDialogOptons(bool toggle);
    void toggleIntervalOptions(int idx);
    void setIntervalText(const QDateTime dt);
    void addSounds();
    void startPlaySound();
    void stopPlaySound();
    bool isCorrectReminder();


private:
    QString dayOfMonth(const QDateTime datetime);
    Ui::ReminderDialog *ui;
    bool _edit;
    int idx;
};

#endif // REMINDERDIALOG_H
